package zbl.c0.error;

/**
 * 		设置枚举类，封装对应的错误信息
 * 
 * @author 朱伯龙
 *
 */


public enum Errors {
	
	// 普适错误信息
	CommenError("发现错误!"),
	
	// 词法分析错误信息
	LexInvalidChar("读取到非法字符！"),
	LexIntegerOutOfBoundary("整数超过界限！"),
	LexLostQuotation("引号无法匹配！"),
	
	
	// 语法分析部分错误信息
	GraUnexpectedEnd("语法分析未读到源程序结束标记！异常结束！！！"),
	GraGloFuncDefine("全局变量或者函数声明不正确！！！"),
	GraMainFuncDefine("函数声明缺少标识符，或者缺少main关键字！"),
	GraUnmatched("未匹配到期望的词法单元"),
	GraNeedNum("需要数字"),
	GraNonePreStmt("不是任何语句的前缀"),
	GraNoneExpSym("非法表达式符号"),
	GraNonePreFactor("非法项前缀"),
	
	
	// 语义分析部分错误信息
	SynIdConflict("符号冲突！"),
	SynUndefined("未定义的符号"),
	SynUndefinedFunc("未定义的函数名"),
	SynUndefinedId("未定义的变量或常量"),
	SynVoidRetError("返回类型为void不能有带返回值的return语句"),
	SynIntRetError("返回类型为int必须有带返回值的return语句"),
	SynConstAssign("常量不能再次被赋值"),
	SynConstNoneInit("常量必须被初始化赋值"),
	SynNoneMain("缺少main函数"),
	SynNoneRetInExp("不允许没有返回值的函数调用出现在表达式中"),
	SynCallArgsError("函数调用参数数目不正确"),
	SynVarInit("变量声明不能初始化"),
	SynFuncAgain("函数重复定义");
	
	
	
	private final String errorInfo;			// 存储对应的错误提示信息
	
	Errors(String errorInfo){				// enum类的构造函数，用于构造上面的枚举类
		this.errorInfo = errorInfo;
	}
	
	/**
	 * 		返回对应的错误提示信息		
	 * 
	 * @return 对应的错误提示信息
	 */
	public String getInfo(){				
		return errorInfo;
	}
	
}
